home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-05-19 | 17.2 KB | 413 lines | [TEXT/MACA] |
- Bugglings 1.0, by Chuck Shotton
- ===============================
-
- (Note: This documentation looks best if printed using Monaco 9 pt,
- with tabs every 3 spaces)
-
- (Another Note: This is a reasonably complicated program. You'll get
- more out of it if you carefully study the documentation prior
- to running Bugglings.)
-
- ============
- Introduction
- ============
- If you ever wanted to be the master of your own universe, here's the
- program for you...
-
- Bugglings is a program based on the Computer Recreations column in the
- May 1989 issue of Scientific American. This program simulates life in
- a test tube, with tiny bugs swimming around, feeding on food particles.
-
- The bugs are driven by a set of 9 genes that determine how
- they swim about in the test tube. As the bugs feed on food particles,
- grow fat and fission into new bugs. When this happens, the two new bugs
- retain most of the genetic features of the parent bug, but one of them
- is slightly mutated.
-
- Through the course of several generations, bugs will evolve survival
- traits based on their environment. Some bugs will "learn" where food
- shows up, moving in those areas only. Some evolve into bugs that can
- rapidly cover large distances, searching for food. Others will evolve
- into carnivores that feed on their weaker neighbors. You can affect
- the evolution of your bugs by modifying their environment while the
- simulation is running.
-
- ===================
- Running the Program
- ===================
- The Stuffit archive contains two versions of the Bugglings program. The
- version titled "Bugglings" should run on any Macintosh that has 512k to
- spare (I'm not sure if it'll run on 512k Macs or not). The program
- titled "Bugglings '020+" will only work on Macs with a 68020 or greater
- and a math coprocessor. Other than the different processor requirements,
- both programs are identical, including support for color. Bugglings is
- compatible with Multifinder, and will run simulations in the background.
-
- To get started, simply run the appropriate version of Bugglings for your
- Mac. For monochrome display users, double-clicking on the "Black & White
- Startup" document will bring Bugglings up already configured for your
- display.
-
- =============
- The Test Tube
- =============
- The main window that opens up represents the test tube you will be
- experimenting in. The screen is arranged in a rectangular matrix that
- can vary in size from 8 by 15 cells to 275 by 500 cells. Each location
- on the screen can contain a food particle, a bug, a piece of the test
- tube wall, or can be empty. Bugs are represented by solid (black, white,
- or colored) boxes, while food is represented by grey boxes.
-
- The bottom of the main window contains two rectangular boxes. The box on
- the lower left will display the number of generations (cycles) that
- have elapsed in the simulation, as well as the current living population
- total in the test tube. The wider box in the lower right of the screen
- is the status box, and will be used to display information about a
- specific bug.
-
- ========
- The Bugs
- ========
- As mentioned, the bugs have 9 genes that control their behavior. 8 of
- the genes control the bugs' motion, while the 9th controls how
- carnivorous a bug is. In addition to these genes, all bugs have
- attributes that control:
- • How old they must be before they can breed.
- • How much energy (food) they must have in order to breed.
- • How much energy (food) they can hold at one time. (stomach size?)
- • How weak they can be before they die.
- • Who their parent was.
-
- During each cycle, a bug may turn and move in one of eight directions as
- shown below:
-
- Forward
- Left | Right
- \ | /
- Med. Left----+----Med. Right
- / | \
- Hard Left | Hard Right
- Reverse
-
- The direction of motion is relative to the direction a bug is facing. If
- a bug is facing the right side of the screen and decides to move to the
- right (Med. Right), the bug will appear to move towards the bottom of
- the screen. The bug's new facing direction would then become towards the
- bottom of the screen, and subsequent moves would be relative to that
- facing.
-
- Each move costs a bug 1 point of energy. When a bug moves across a food
- particle, it is eaten. If the bug's total energy is below its maximum,
- the the energy value of the food particle is added to the bug's total
- energy. If a bug eats another bug, its energy is increased by the amount
- of energy the eaten bug had. If a bug's energy level falls to 0, it will
- be unable to move.
-
- The Genes
- ---------
- The eight movement genes determine the probability that a bug will turn
- and move in a given direction. The first gene listed is a bug's tendency
- to move straight ahead. The second is its tendency to make right turns,
- and so forth (clockwise around the diagram above, ending with the 8th
- gene controlling left turns.) If a bug had the following genes:
- 10,5,0,0,5,0,0,0
- its movement is computed as follows.The value of all genes is totaled up.
- In this case the total value of all genes is 20. The probability that a bug
- will turn and move in any direction is computed by dividing the value of
- a single gene by the total. In this case, the bug will move forward 50% of
- the time (10/20) and will go to the right or in reverse 25% of the time
- respectively. A random number is chosen, and according to the distribution
- of probabilities, the appropriate direction for the bug is chosen.
-
- The 9th gene controls a bug's taste for flesh. If the Carnivore gene falls
- below a user-specified level, the bug will only eat food particles. If the
- gene is above another level, the bug will only eat other bugs. If it falls
- in the range between these two levels, it represents the probability that
- a bug will choose to eat food or other bugs. The higher the gene's value,
- the less herbivorous the bug and vice versa. Bugs will only feed on other
- bugs with a lower Carnivore gene, so this gene also represents how
- physically strong a bug is.
-
- Breeding
- --------
- A bug will breed provided it is old enough and has enough energy stored up.
- When a bug breeds, its offspring have a chance of having mutated genes. It
- is through this mutation process that new bugs evolve. Also, you have the
- option of introducing radiation into the environment which will cause
- mutations in bugs at any time, not just when breeding.
-
- Breeding is by fission. When this occurs, both new bugs will have half
- of the energy of the original bug, and their age will be reset to zero.
- Also, the new bug will have some of its genes mutated. The original bug,
- now half its original size, will remain untouched genetically. There is
- a limit of 1000 bugs total in the simulation at any one time.
-
- ==========
- The Cursor
- ==========
- You will notice that the cursor changes from the usual arrow to a set of
- crosshairs when the mouse enters the test tube area of the main screen.
- By positioning the cursor over a bug while the simulation is running (or
- paused) and clicking, the stats of a particular bug will be shown in the
- status box. If you hold down the shift key and click on a bug, that bug
- will be destroyed and removed from the test tube.
-
- ==============
- The Status Box
- ==============
- The status box will show the stats for whatever bug is currently selected
- using the cursor as described above. If that bug dies, the display will
- show no bug. A sample display in the status box might contain:
-
- #22(5):M=90 E=390 D=6 Genes: 0,5,0,2,0,3,2,1,3
-
- The fields are interpreted as follows:
-
- #22(5) - This indicates that the bug being observed is #22, and it belongs
- to the family of bugs whose original parent was bug 5. For users with
- color displays, all bugs of the same family have the same color. If there
- are more than 7 bugs initially, then some colors will be used by more than
- one family.
-
- M=90 - This shows that the bug has moved 90 times, or is 90 cycles old.
-
- E=390 - This is the bug's current energy level.
-
- D=6 - This is absolute direction that a bug is facing. In this case, 6
- indicates that the bug is facing to the left of the screen. (0 is up,
- 2 is right, etc.)
-
- Genes: - These nine numbers are the nine genes associated with each bug.
- The first number is the Forward gene, followed by the Right gene, etc. The
- last gene is the Carnivore gene.
-
- Tracking Bugs
- -------------
- When you are tracking a bug, it is often difficult to pick your bug out
- of a crowd. By clicking the mouse in the Status Box, all motion on the
- screen will stop, and the currently selected bug will flash briefly.
-
- =========
- The Menus
- =========
- Bugglings only has three menus. The FILE menu is used to load or save
- the current configuration of the test tube and bugs. EDIT menu options
- are only functional when used with desk accessories. The SIMULATION menu
- contains all of the controls that are used to run and modify the
- simulation.
-
- FILE
- ----
- The Open command is used to load a settings file. These files contain
- saved values for all of the information provided in the Environment, Bug,
- and Test Tube settings dialogs.
-
- The Save As command will save the current values of the information in the
- Environment, Bug, and Test Tube settings dialogs.
-
- Quit will exit the program immediately. Clicking in the go-away box of the
- main window has the same effect.
-
- EDIT
- ----
- As mentioned, options in the Edit menu are supplied for the convenience of
- Desc Accessories running under the regular Finder.
-
- SIMULATION
- ----------
- The Run, Pause, and Stop commands are used to control the execution of a
- simulation. When Run is selected, a new simulation is started, using the
- current settings from the various dialogs.
-
- Pause will cause the currently executing simulation to halt. This makes it
- easier to select bugs for tracking, change environment settings, or get
- a sandwich. Selecting Pause again will resume the current simulation.
-
- Stop will terminate the simulation, leaving the screen undisturbed. If
- the population reaches zero during any simulation, the simulation will
- automatically stop.
-
- The Environment, Bug, and Test Tube Settings options bring up dialogs for
- controlling the simulation. These dialogs are described in more detail
- below.
-
- The Change Colors option will temporarily invert the display. This option
- can be used to determine which background color (white or black) is more
- appealing. For black and white displays, it is suggested that a white
- background always be used, since most bugs will appear black.
-
- ================
- Settings Dialogs
- ================
-
- Each field in the following dialogs is described. At the end of the
- description is the legal range of values for that field.
-
- Environement Settings
- ---------------------
- The Environment Settings Dialog is the most important dialog box. This
- dialog can be used to change the parameters of a simulation before it is
- started, or while the simulation is executing. This allows you to increase
- the food being added to the environment, for example, while the
- simulation is running.
-
- *** IMPORTANT NOTE ***
- Any changes to the Environment Settings will NOT take effect until you
- click on the OK button, or press return. This allows you to change many
- parameters at once while the simulation is running. If you decide you
- don't want to change the values, clicking on cancel will revert to
- the currently active values. If the value is out of range, the previous
- correct value will be supplied.
-
- The fields in the Environment Settings dialog are defined as follows:
-
- Radiation Level : This is a number between 0 and 100 that represents the
- percentage chance that one bug will be mutated during any cycle. The bug
- is chosen at random, as are the genes.
-
- Herbivore Level : If a bug's Carnivore gene falls below this level, the
- bug will only eat food particles. Set it very high if you want all
- bugs to be herbivores. 0-32767
-
- Carnivore Level : If a bug's Carnivore gene is above this value, the bug
- will only feed on other bugs. Again, set this very high (and higher than
- the Herbivore Level) if you want only Herbivores. 0-32767
-
- Food Value : When a bug eats a food particle, it will gain this much
- energy. 0-32767
-
- Food Density : This field describes how dense food will be distributed
- when the simulation starts. It is specified as a 1 in N+1 chance that a
- given cell will contain a food particle. If the value is 3, there will
- be food in 25% of the cells when the simulation starts. 1-1000
-
- Feeding Frequency : This represents a percentage of cycles in which food
- will be added to the test tube. If it is 75, food will be added to the
- simulation 75% of the time (3 cycles out of 4). 0-100
-
- Feeding Amount : When it's feeding time, this is how may food particles
- will be randomly placed in the test tube. (If an attempt is made to place
- a particle on an occupied cell, the particle is discarded.) 0-32767
-
- Full Energy Level: This is the maximum amount of energy a bug can hold.
- It's analogous to the bug's stomach size. 0-32767
-
- Death Level : If a bug's energy level falls below this value, a bug will
- die and be removed from the simulation. -32768-32767
-
- Breeding Age : A bug must survive this many cycles or generations before
- it is allowed to breed. 0-32767
-
- Breeding Energy : A bug must possess this much energy in order to fission.
- Set this value above the Full Energy level to inhibit breeding. 0-32767
-
- Bug Settings
- ------------
- This dialog can only be invoked prior to running a simulation. The fields
- are defined as follows:
-
- Initial Bug Count : This represents how many bugs will be present
- in the test tube when the simulation starts. 1-1000
-
- Initial Energy : All of the initial bugs will start with this much energy.
- 0-32767
-
- Initial Genes : This determines the highest value for any gene in the
- initial bugs. Gene values will range from 0 to this value. The higher the
- value, the less impact mutations will have on the genes. Once the
- simulation is running, the bugs' gene values may range from 0 to 2 times
- this value. 0-50
-
- # Genes to Mutate : When a bug's genes mutate, due to radiation or
- breeding, this value determines how many genes are affected. 0-9
-
- Mutation Delta : When a gene is mutated this value is used to determine
- the amount of mutation. A gene will be changed by a random amount
- between -N and N. 0-50
-
- Bug #1 is Special : This check box really doesn't do anything.
-
- Looper : This check box, when selected, will initialize bug #1's
- movement genes to 10,5,0,0,0,0,0,0, causing it to make large clockwise
- loops across the screen.
-
- Carnivore : When this check box is selected, bug #1's Carnivore gene will
- be set high enough to insure that it will be a pure carnivore.
-
- Test Tube Settings
- ------------------
- This dialog can only be invoked prior to running a simulation. It controls
- many of the parameters associated with the size and appearance of the
- display. Fields are as follows:
-
- Garden of Eden : As described in the Scientific American article, this
- check box will cause food to be replenished at twice the normal rate in
- an area in the upper left corner of the screen.
-
- Wrap-around Universe : When checked, this option will cause bugs that move
- off the edge of the screen to reappear on the opposite edge. Turning it off
- will draw a wall around the screen that the bugs will bang into.
-
- Use White Background : This option is useful for monochrome displays. It
- causes the background to be white instead of the default black. The
- bugs will then show up as black rectangles.
-
- Cell Width : This determines how wide cells on the screen will be. The
- larger the width, the fewer horizontal cells available. 1-32
-
- Cell Height : Same as above, but determines the vertical size of the cells.
- Width and Height need not be the same value. 1-32
-
- ===============
- Hints and Stuff
- ===============
- Bugglings is a fairly complicated program. You can simulate lots of
- natural population phenomena, ranging from locust plagues to coyote
- and rabbit population cycles. Of course, it's all in your interpretation
- of the behavior in the test tube.
-
- The program tends to bog down when the populations get very high. It's
- possible to limit population size by adjusting things like the Full
- Energy Level and Food Value (aside from the obvious parameters like
- Breeding Age and Energy). The evolution of well-adapted bugs seems to
- work best with high turn-over in population initially, and then making
- the population more stable later. Do this by raising the breeding age and
- energy while the simulation is running.
-
- ======================================
- ShareWare, Source Code, Licenses, etc.
- ======================================
-
- Bugglings was written by Chuck Shotton in Think Pascal. The program is
- copyrighted 1989 by Chuck Shotton and BIAP Systems. Portions of the
- program are Copyrighted by Think, Inc.
-
- If you find Bugglings to be a useful or interesting program, please
- consider paying the $5 ShareWare fee. This gives me incentive to write
- more goodies like this one. If you are truly interested in the inner
- workings of this program, or would like to make your own modifications,
- Think (Lightspeed) Pascal source code is available for $8. The source
- should also be an easy port to other Mac Pascal compilers.
-
- Limited license is granted for your own personal use of this software.
- If you are considering bundling this software with other packages, adding
- it to a commercial shareware anthology, or using it in a commercial,
- government, or educational environment, please contact the author regarding
- special licensing agreements.
-
- Thanks,
-
- Chuck Shotton
- c/o BIAP Systems
- P.O. Box 580622
- Houston, TX 77258-0622
-
- Genie: C.SHOTTON12
- Compu$erve: 72460,764
- AppleLink: D1683
-
- BIAP BBS: (713) 480-7422, 1200-8-N-1
-
-
-
-